package Server.UI;


import java.awt.Dimension;

import javax.swing.JPanel;
/**
	 * Gestisce un pannello con bottoni posizionati in verticale
	 * @author Gruppo 6
	 *
	 */
public class OptionPanelVertical extends PanelComponent{
	//private GridLayout gridlay; 
	

	/**
	 * inizializza il JPanel pannellocomponente con layout null
	 * 
	 * @param parent	PanelComponent padre di OptionPanelHorizzontal
	 */
	public OptionPanelVertical(PanelComponent parent){
		super(parent);
		pannellocomponente= new JPanel(/*new GridLayout()*/null);
		}
	
	/**
	 * restituisce il pannellocomponente con Background white
	 * @Override
	 */
	public JPanel createComponents(){
		return pannellocomponente ;
	}
	
	/**
	 * aggiunge il PanelComponent figlio a OptionPanelHorizzontal, senza indicare la posizione
	 * @Override
	 * @param figlio PanelComponent da aggiungere come figlio
	 */
	public void add(PanelComponent figlio) {
		super.add(figlio);
		pannellocomponente.add(figlio.createComponents());	
		updateSize();
	}
	
	/**
	 * aggiunge il PanelComponent figlio a OptionPanelHorizzontal indicando anche la posizione 
	 * @param figlio 	PanelComponente da aggiungere come figlio a OptionPanelHorizzontal
	 * @param x			Posizione in cui aggiugere il pannellocomponente di figlio
	 */
	public void addPosition(PanelComponent figlio, int y){
		super.add(figlio);
		JPanel paneltemp= figlio.createComponents();
		//Dimension size = figlio.getSize();
		paneltemp.setBounds(0,y,figlio.getSize().width,figlio.getSize().height);
	
		pannellocomponente.add(paneltemp);
		
		updateSize();
		pannellocomponente.validate();
		
	}
	
	/**
	 * Rimuove il figlio e pannellocomponente in posizione index
	 * @param index 	indice del PanelComponent figlio
	 */
	public void remove(int index ){
		super.remove(index);
		pannellocomponente.remove(index);
	}
	

	/**
	 * aggiorna la dimensione di OptionPanelHorizzontal in base ai PanelComponent in esso presenti
	 */
	public void updateSize(){
		size_width=0;
		size_height=0;
		int i=0;
		Dimension d= new Dimension(size_width,size_height);
		
		for (PanelComponent pcelement: children) {
			d=pcelement.getSize();
			size_height=size_height+d.height+pannellocomponente.getComponent(i).getLocation().y;
			if(size_width<d.width){size_width=d.width;}//*/
			i++;
		}
		this.setSize(size_width, size_height);
		
		if(parent!=null)parent.updateSize();
	}
	
	/**
	 * imposta le dimensioni dell'OptionPanelHorizzontal riposizionando i componenti in esso presenti
	 * @param width
	 * @param height
	 * @Override
	 */
	public void setSize(int width, int height){
		super.setSize(width, height);
		for (PanelComponent pcelement: children) {
			pcelement.setSize(width,pcelement.getSize().height);
		}
	}

}
